package br.ufal.questione.web;

import java.io.Serializable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.ufal.questione.dao.PerguntaDao;
import br.ufal.questione.dao.RespostaDao;
import br.ufal.questione.domain.Pergunta;
import br.ufal.questione.domain.Resposta;

@Controller
@RequestMapping("/questionarios")
public class RespostaController implements Serializable {

	private static final long serialVersionUID = -3047281267979543344L;
	
	@Autowired
	private PerguntaDao perguntaDao;
	
	@Autowired
	private RespostaDao respostaDao;
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/respostas/nova", method = RequestMethod.GET)
	public String setUpForm(Model model, Resposta resposta, @PathVariable("idPergunta") Long idPergunta) {		
		Pergunta pergunta = this.perguntaDao.consultar(idPergunta);
		
		model.addAttribute("pergunta", pergunta);
		
		return "resposta";
	}
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/respostas/nova", method = RequestMethod.POST)
	public String cadastrar(Model model, @PathVariable("idQuestionario") Long idQuestionario, Resposta resposta) {
		resposta.setOrdem(this.respostaDao.getUltimaOrdemResposta(resposta.getPergunta()));
		this.respostaDao.inserir(resposta);
		
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/respostas/{idResposta}/excluir", method = RequestMethod.GET)
	public String excluir(Model model, @PathVariable("idResposta") Long idResposta, @PathVariable("idQuestionario") Long idQuestionario) {
		Resposta resposta = this.respostaDao.consultar(idResposta);
		this.respostaDao.excluir(resposta);
		this.respostaDao.reorganizarRespostas(resposta.getPergunta());
		
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}
	
	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/respostas/{idResposta}/subir", method = RequestMethod.GET)
	public String subir(Model model, @PathVariable("idResposta") Long idResposta, @PathVariable("idQuestionario") Long idQuestionario) {
		this.respostaDao.subirOrdem(new Resposta(idResposta));
		Resposta resposta = this.respostaDao.consultar(idResposta);
		this.respostaDao.reorganizarRespostas(resposta.getPergunta());
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}

	@RequestMapping(value = "{idQuestionario}/perguntas/{idPergunta}/respostas/{idResposta}/descer", method = RequestMethod.GET)
	public String descer(Model model, @PathVariable("idResposta") Long idResposta, @PathVariable("idQuestionario") Long idQuestionario) {
		this.respostaDao.descerOrdem(new Resposta(idResposta));
		Resposta resposta = this.respostaDao.consultar(idResposta);
		this.respostaDao.reorganizarRespostas(resposta.getPergunta());
		return "redirect:/questionarios/" + idQuestionario + "/editar";
	}
	
}
